package factory;

import model.channel.Channel;
import ihm.DisplayerPanel;
import model.observer.SensorObserver;
import model.algorithmes.SpreadingAlgorithme;
import model.subject.Sensor;

/**
 * Interface permettant la création des différentes composantes de l'application.
 */
public interface CentralFactory {

	/**
	 * Création du modèle d'un capteur.
	 * @return	Un nouveau modèle de capteur.
	 */
	public Sensor createSensor();
	
	/**
	 * @param strategyNumber	Numéro de la stratégie de diffusion à créer.
	 * @return	Une nouvelle stratégie de diffusion.
	 */
	public SpreadingAlgorithme createSpreadingAlgorithme(int strategyNumber);
	
	/** 
	 * Création du modèle d'un observeur de capteur.
	 * @return	Un nouveau modèle d'observeur de capteur.
	 */
	public SensorObserver createSensorObserver();
	
	/**
	 * Création du modèle d'un canal.
	 * @return	Un nouveau modèle de canal.
	 */
	public Channel createChannel();
	
	/**
	 * Création de la vue d'un observeur de capteur.
	 * @return	Une nouvelle vue d'un observeur de capteur. 
	 */
	public DisplayerPanel createDisplayerPanel();
	
}
